package com.jlboot.app.admin.controller.sys;

import com.jlboot.core.annotation.JlActivity;
import com.jlboot.core.base.PageSearch;
import com.jlboot.core.cache.SysUserCache;
import com.jlboot.app.admin.ui.plugins.layui.LayuiData;
import com.jlboot.core.json.JsonResult;
import com.jlboot.core.model.DataMap;
import com.jlboot.app.admin.base.BaseController;
import com.jlboot.core.form.FormData;
import com.jlboot.core.form.FormSelect;
import com.jlboot.core.plugins.UploadUtil;
import com.jlboot.core.cache.SysDataCache;
import com.jlboot.model.po.sys.SysFile;
import com.jfinal.plugin.activerecord.Page;

import java.util.List;

/**
 * Created by 51594 on 2020/6/1.
 */
public class SysFileController extends BaseController {

    @JlActivity( name = "", log = false)
    public void index() {
        renderText("默认");
    }


    /**
     * 列表
     */
    
    public void SysFileList() {
        FormData fd = FormData.n();
        setAttr("form", fd);
        render("SysFileList.html");
    }

    /**
     * 列表数据提供API
     */
    
    public void SysFileListDataApi() {
        PageSearch ps = PageSearch.n().setTable("sys_files").init(getRequest())
                .orderby(getRequest(), "id desc");
        Page<SysFile> pages = ps.paginate(SysFile.dao);
        List<SysFile> datalist = pages.getList();
        FormSelect ft = SysDataCache.getFormSelect("sysfile_type").setReadOnly(true);
        for (SysFile files : datalist) {
            files.put("file_type_html", ft.showHtml(files.mod.getInt("file_type")));
            files.put("file_size_html", UploadUtil.getFileSize(files.mod.getLong("file_size")));
            files.put("update_username", SysUserCache.transUserName(files.getStr("update_user")));
        }
        renderJson(LayuiData.newData().setData(datalist).setCount(pages.getTotalRow()));
    }

    /**
     * 添加
     */
    
    public void AddSysFile() {
        FormData fd = FormData.n().setActions("ADD");
        setAttr("files", new SysFile());
        setAttr("form", fd);
        render("ModifySysFile.html");
    }

    /**
     * 修改
     */
    
    public void EditSysFile() {
        String file_id = getPara("id");
        SysFile o = SysFile.dao.findById(file_id);
        FormData fd = FormData.n().setActions("EDIT");
        setAttr("form", fd);
        setAttr("files", o);
        render("ModifySysFile.html");
    }

    /**
     * 修改API
     */
    
    public void ModifySysFileApi() {
//取得数据
        DataMap data = getParaData("postData", "");
        String file_id = data.getStr("id");//主键
        String actions = data.getStr("actions");//action
        if ("EDIT".equals(actions)) {//修改
            boolean results = SysFile.dao.findById(file_id)
                    .set("file_name", data.getStr("file_name"))
                    .set("file_path", data.getStr("file_path"))
                    .set("file_ext", data.getStr("file_ext"))
                    .set("file_desc", data.getStr("file_desc"))
                    .update();
            renderJson(Json(results, "修改"));
        } else {//添加
            boolean results = new SysFile()
                    .set("id", SysFile.getNextId())
                    .set("file_type", data.getInt("file_type"))
                    .set("file_name", data.getStr("file_name"))
                    .set("file_path", data.getStr("file_path"))
                    .set("file_size", data.getInt("file_size"))
                    .set("create_time", data.getDate("create_time"))
                    .set("file_ext", data.getStr("file_ext"))
                    .set("save_year", data.getInt("save_year"))
                    .set("save_month", data.getInt("save_month"))
                    .set("update_user", data.getStr("update_user"))

                    .save();
            renderJson(Json(results, "添加"));
        }
    }

    /**
     * 修改field API
     */
    
    public void ModifySysFileFieldApi() {
        String file_id = getPara("key_id");
        String field = getPara("field");
        String value = getPara("values");
        SysFile.dao.findById(file_id).set(field, value).update();
        renderJson(JsonResult.okWithMsg("修改成功"));
    }


    /**
     * 删除接口API
     */
    
    public void DelSysFileApi() {
        String file_id = getPara("id");
        SysFile files = SysFile.dao.findById(file_id);
        if (files == null) {
            renderJson(JsonResult.fail( "记录不存在"));
        } else if (files.delete()) {
            renderJson(JsonResult.okWithMsg("删除成功"));
        } else {
            renderJson(JsonResult.fail( "删除失败"));
        }
///////////////////////////////////
//
// int file_id = getPara("id");
// int counts = Db.queryInt("select count(*) from TABLENAME where file_id=?", file_id);
// if (counts == 0) {
// if (SysFile.dao.findById(file_id).delete()) {
// renderJson(JsonResult.okWithMsg("删除成功"));
// } else {
// renderJson(JsonResult.fail( "删除失败"));
// }
// } else {
// renderJson(JsonResult.fail( "该记录下有" + counts + "子记录,不能删除"));
// }
    }

    /**
     * 图片上传接口
     */
    
    public void UploadFile() {
        renderJson(UploadUtil.n().upload(getRequest(), "/jlboot", true, true));
    }

}